package com.hsgene.order.domain;

import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.hsgene.common.util.date.TimeJsonDeserializer;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 子订单基础信息
 *
 * @author wangbing
 * @version 1.0, 2018/8/3
 */
@Deprecated
public class OrderMallItemBasic implements Serializable {

    private static final long serialVersionUID = 3846271098974685519L;
    /**
     * 订单id
     */
    private String id;

    /**
     * 主订单id（order_mall:id）
     */
    private String mainOrderId;

    /**
     * 商城订单表结构设计
     */
    private String userId;

    /**
     * 订单来源：APP、WEB、小程序...
     */
    private String from;

    /**
     * 商城商品id
     */
    private String mallGoodsId;

    /**
     * 商城商品快照id
     */
    private String snapshootId;

    /**
     * 商品名称
     */
    private String goodsName;

    /**
     * 商品封面
     */
    private String coverUrl;

    /**
     * 商品所需耗材（商品规格包装）
     */
    private String specification;

    /**
     * 价格区间开始
     */
    private BigDecimal priceSectionStart;

    /**
     * 价格区间结束
     */
    private BigDecimal priceSectionEnd;

    /**
     * 购买数量，当前只能为1
     */
    private Integer count;

    /**
     * 单价
     */
    private BigDecimal univalence;

    /**
     * 邮费，当前全免邮
     */
    private BigDecimal postage;

    /**
     * 订单总金额
     */
    private BigDecimal totalAmount;

    /**
     * 订单优惠总金额
     */
    private BigDecimal totalDiscountsAmount;

    /**
     * 订单实际待支付金额
     */
    private BigDecimal totalRealAmount;

    /**
     * 订单已支付金额
     */
    private BigDecimal paidAmount;

    /**
     * 支付方式
     */
    private String payType;

    /**
     * 支付状态
     */
    private String paymentStatus;

    /**
     * 支付时间
     */
    @JsonDeserialize(using = TimeJsonDeserializer.class)
    private Date paidTime;

    /**
     * 材料申请编号（耗材物流寄送信息由耗材模块管理）
     */
    private String materialApplyNo;

    /**
     * 检测报告
     */
    private String detectionReport;

    /**
     * 投递类型-投递时间段选择
     */
    private String deliveryType;

    /**
     * 快递公司
     */
    private String expressageCompany;

    /**
     * 快递单号
     */
    private String expressageNo;

    /**
     * 订单状态
     */
    private String status;

    /**
     * 是否取消订单
     */
    private Boolean cancelStatus;

    /**
     * 取消原因
     */
    private String cancelReason;

    /**
     * 是否存在异常
     */
    private Boolean exception;

    /**
     * 异常原因
     */
    private String exceptionReason;

    /**
     * 创建时间
     */
    @JsonDeserialize(using = TimeJsonDeserializer.class)
    private Date createTime;

    /**
     * 更新时间
     */
    @JsonDeserialize(using = TimeJsonDeserializer.class)
    private Date updateTime;

    public String getCoverUrl() {
        return coverUrl;
    }

    public void setCoverUrl(String coverUrl) {
        this.coverUrl = coverUrl;
    }

    public BigDecimal getPriceSectionStart() {
        return priceSectionStart;
    }

    public void setPriceSectionStart(BigDecimal priceSectionStart) {
        this.priceSectionStart = priceSectionStart;
    }

    public BigDecimal getPriceSectionEnd() {
        return priceSectionEnd;
    }

    public void setPriceSectionEnd(BigDecimal priceSectionEnd) {
        this.priceSectionEnd = priceSectionEnd;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getMainOrderId() {
        return mainOrderId;
    }

    public void setMainOrderId(String mainOrderId) {
        this.mainOrderId = mainOrderId;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getFrom() {
        return from;
    }

    public void setFrom(String from) {
        this.from = from;
    }

    public String getMallGoodsId() {
        return mallGoodsId;
    }

    public void setMallGoodsId(String mallGoodsId) {
        this.mallGoodsId = mallGoodsId;
    }

    public String getSnapshootId() {
        return snapshootId;
    }

    public void setSnapshootId(String snapshootId) {
        this.snapshootId = snapshootId;
    }

    public String getGoodsName() {
        return goodsName;
    }

    public void setGoodsName(String goodsName) {
        this.goodsName = goodsName;
    }

    public String getSpecification() {
        return specification;
    }

    public void setSpecification(String specification) {
        this.specification = specification;
    }

    public Integer getCount() {
        return count;
    }

    public void setCount(Integer count) {
        this.count = count;
    }

    public BigDecimal getUnivalence() {
        return univalence;
    }

    public void setUnivalence(BigDecimal univalence) {
        this.univalence = univalence;
    }

    public BigDecimal getPostage() {
        return postage;
    }

    public void setPostage(BigDecimal postage) {
        this.postage = postage;
    }

    public BigDecimal getTotalAmount() {
        return totalAmount;
    }

    public void setTotalAmount(BigDecimal totalAmount) {
        this.totalAmount = totalAmount;
    }

    public BigDecimal getTotalDiscountsAmount() {
        return totalDiscountsAmount;
    }

    public void setTotalDiscountsAmount(BigDecimal totalDiscountsAmount) {
        this.totalDiscountsAmount = totalDiscountsAmount;
    }

    public BigDecimal getTotalRealAmount() {
        return totalRealAmount;
    }

    public void setTotalRealAmount(BigDecimal totalRealAmount) {
        this.totalRealAmount = totalRealAmount;
    }

    public BigDecimal getPaidAmount() {
        return paidAmount;
    }

    public void setPaidAmount(BigDecimal paidAmount) {
        this.paidAmount = paidAmount;
    }

    public String getPayType() {
        return payType;
    }

    public void setPayType(String payType) {
        this.payType = payType;
    }

    public String getPaymentStatus() {
        return paymentStatus;
    }

    public void setPaymentStatus(String paymentStatus) {
        this.paymentStatus = paymentStatus;
    }

    public Date getPaidTime() {
        return paidTime;
    }

    public void setPaidTime(Date paidTime) {
        this.paidTime = paidTime;
    }

    public String getMaterialApplyNo() {
        return materialApplyNo;
    }

    public void setMaterialApplyNo(String materialApplyNo) {
        this.materialApplyNo = materialApplyNo;
    }

    public String getDetectionReport() {
        return detectionReport;
    }

    public void setDetectionReport(String detectionReport) {
        this.detectionReport = detectionReport;
    }

    public String getDeliveryType() {
        return deliveryType;
    }

    public void setDeliveryType(String deliveryType) {
        this.deliveryType = deliveryType;
    }

    public String getExpressageCompany() {
        return expressageCompany;
    }

    public void setExpressageCompany(String expressageCompany) {
        this.expressageCompany = expressageCompany;
    }

    public String getExpressageNo() {
        return expressageNo;
    }

    public void setExpressageNo(String expressageNo) {
        this.expressageNo = expressageNo;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public Boolean getCancelStatus() {
        return cancelStatus;
    }

    public void setCancelStatus(Boolean cancelStatus) {
        this.cancelStatus = cancelStatus;
    }

    public String getCancelReason() {
        return cancelReason;
    }

    public void setCancelReason(String cancelReason) {
        this.cancelReason = cancelReason;
    }

    public Boolean getException() {
        return exception;
    }

    public void setException(Boolean exception) {
        this.exception = exception;
    }

    public String getExceptionReason() {
        return exceptionReason;
    }

    public void setExceptionReason(String exceptionReason) {
        this.exceptionReason = exceptionReason;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }
}
